<?php

//Script che aggiunge le tabelle per la gestione degli Ordini
//e agiunge gli attributi in AziendaRappresentata per l'upload dei Loghi delle Aziende

chdir("../"); //siamo in una sotto directory quindi saliamo di un livello nella
//path corrente per rimanere validi tutti i percorsi di inclusione.

require_once("Model/ModelsInclude.php");

require_once("Layout/header.php");
require_once("Layout/controllersPageLayout.php");

require_once("Lib/Utils.php");

/*
 * Connessione DB.
 */
$db = new DatabaseManager();
$db->Connect(true); //true viene passato xkè non è richiesto il login

if (!Parameters::areUpgradeScriptsEnabled($db)) {
	printFailPage("Script di aggiornamento non abilitati!", $db->lastQuery);
	die();
}

mysql_query("SET CHARACTER SET 'utf8'");


//AGGIUNTA TABELLE PER ORDINE


$SuccessOrdine = "false";
$SuccessArticoloOrdine = "false";
$SuccessVariazioneArticoloOrdine = "false";

$campiTabellaOrdine = $db->GetTableFieldsList("Ordine");
if (!in_array("TermineDiConsegna", $campiTabellaOrdine)) {

	//Rimuovo le vecchie tabelle se già esistono
	//L'ordine di rimozione è importante per evitare problemi con le Foreign Key
	if ($db->ExcecuteSQL("DROP TABLE `ArticoloOrdine`;"))
		if ($db->ExcecuteSQL("DROP TABLE `Ordine`;"))


//ArticoloOrdine 
			$ArticoloOrdineTable = $db->ExcecuteSQL("
CREATE TABLE  `ArticoloOrdine` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `idArticolo` int(11) DEFAULT NULL,
  `idOrdine` int(11) DEFAULT NULL,
  `TipoModificabile` varchar(100) DEFAULT NULL,
  `DescrizioneBreveModificabile` mediumtext,
  PRIMARY KEY (`ID`),
  KEY `idArticolo` (`idArticolo`),
  KEY `idOrdine` (`idOrdine`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;");



//Ordine		
		
	$OrdineTable = $db->ExcecuteSQL("
CREATE TABLE  `Ordine` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `idAgente` int(11) DEFAULT NULL,
  `idAziendaRappresentata` int(11) DEFAULT NULL,
  `idCliente` int(11) DEFAULT NULL,
  `idOfferta` int(11) DEFAULT NULL,
  `BancaAziendaRappresentata` tinytext,
  `IbanAziendaRappresentata` tinytext,
  `OpzioneIbanBancaAziendaRappresentata` TINYINT( 1 ) NULL DEFAULT '0',
  `Indirizzo` text NOT NULL,
  `Contatto` text NOT NULL,
  `TermineDiConsegna` text NOT NULL,
  `OrdineDelCliente` text NOT NULL,
  `Cup` text NOT NULL,
  `Cig` text NOT NULL,
  `Trasporto` text NOT NULL,
  `Pagamento` text NOT NULL,
  `BancaCliente` tinytext,
  `IbanCliente` tinytext NOT NULL,
  `E_MailTecnica` varchar(100) DEFAULT NULL,
  `E_MailCommerciale` varchar(100) DEFAULT NULL,
  `E_MailAmministrativa` varchar(100) DEFAULT NULL,
  `E_MailPec` varchar(100) DEFAULT NULL,
  `Data` date NOT NULL,
  `Note` longtext,
  PRIMARY KEY (`ID`),
  KEY `idOfferta` (`idOfferta`),
  KEY `idAgente` (`idAgente`),
  KEY `idCliente` (`idCliente`),
  KEY `idAziendaRappresentata` (`idAziendaRappresentata`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
");


//VariazioneArticoloOrdine

	$VariazioneArticoloOrdineTable = $db->ExcecuteSQL("
CREATE TABLE  `VariazioneArticoloOrdine` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `idOrdine` int(11) DEFAULT NULL,
  `idVariazioneArticolo` int(11) DEFAULT NULL,
  `PrezzoNetto` float NOT NULL,
  `Quantita` float NOT NULL DEFAULT '1',
  `Totale` float NOT NULL DEFAULT '0',
  PRIMARY KEY (`ID`),
  KEY `idVariazioneArticolo` (`idVariazioneArticolo`),
  KEY `idOrdine` (`idOrdine`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;");


//Foreign Key delle tabelle
//Nota: Le Foreign Key devono essere aggiunte sempre alla fine
	$FkArticoloOrdine = $db->ExcecuteSQL("ALTER TABLE `ArticoloOrdine`
  ADD CONSTRAINT `Fk_Offerta1` FOREIGN KEY (`idOrdine`) REFERENCES `ordine` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `Fk_Articolo1` FOREIGN KEY (`idArticolo`) REFERENCES `articolo` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE;
");

	$FkOrdine = $db->ExcecuteSQL("ALTER TABLE `Ordine`
  ADD CONSTRAINT `Fk_AgenteOrdine` FOREIGN KEY (`idAgente`) REFERENCES `agente` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE,
  ADD CONSTRAINT `Fk_AziendaRappresentataOrdine` FOREIGN KEY (`idAziendaRappresentata`) REFERENCES `aziendarappresentata` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE,
  ADD CONSTRAINT `Fk_ClienteOrdine` FOREIGN KEY (`idCliente`) REFERENCES `cliente` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE,
  ADD CONSTRAINT `Fk_OffertaOrdine` FOREIGN KEY (`idOfferta`) REFERENCES `offerta` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE;");


	$FkVariazioneArticoloOrdine = $db->ExcecuteSQL("ALTER TABLE `VariazioneArticoloOrdine`
  ADD CONSTRAINT `variazionearticoloordine_ibfk_1` FOREIGN KEY (`idOrdine`) REFERENCES `ordine` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `variazionearticoloordine_ibfk_2` FOREIGN KEY (`idVariazioneArticolo`) REFERENCES `variazionearticolo` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE;");


	if ($ArticoloOrdineTable && $FkArticoloOrdine)
		$SuccessArticoloOrdine = "OK";
	if ($VariazioneArticoloOrdineTable && $FkVariazioneArticoloOrdine)
		$SuccessVariazioneArticoloOrdine = "OK";
	if ($OrdineTable && $FkOrdine)
		$SuccessOrdine = "OK";
}


//MODIFICA TABELLA AZIENDARAPPRESENTATA PER LOGO


$SuccessLogoAziendaRappresentata = "false";
$campiTabellaAziendaRappresentata = $db->GetTableFieldsList("AziendaRappresentata");
if (!in_array("Logo", $campiTabellaAziendaRappresentata)) {
	if ($db->ExcecuteSQL("ALTER TABLE `AziendaRappresentata` ADD `Logo` BLOB NULL DEFAULT NULL") &&
			$db->ExcecuteSQL("ALTER TABLE `AziendaRappresentata` ADD `LogoMimeType` VARCHAR( 30 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;"))
		$SuccessLogoAziendaRappresentata = "OK";
}

//MODIFICA ATTRIBUTI A VARIE TABELLE PER ESTENDERE I CARATTERI SUPPORTATI
$SuccessAttributiOfferta = "false";
if ($db->ExcecuteSQL("ALTER TABLE  `Offerta` CHANGE  `Oggetto`  `Oggetto` VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `Offerta` CHANGE  `Trasporto`  `Trasporto` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `articolo` CHANGE  `Nome`  `Nome` TINYTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `articolo` CHANGE  `Tipo`  `Tipo` TINYTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `articoloofferta` CHANGE  `TipoModificabile`  `TipoModificabile` TINYTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `aziendarappresentata` CHANGE  `Banca`  `Banca` VARCHAR( 100 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `aziendarappresentata` CHANGE  `Iban`  `Iban` VARCHAR( 100 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `cliente` CHANGE  `SitoWeb`  `SitoWeb` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `cliente` CHANGE  `Referente`  `Referente` VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `cliente` CHANGE  `CodiceRifDitta`  `CodiceRifDitta` VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `cliente` CHANGE  `Banca`  `Banca` VARCHAR( 100 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `cliente` CHANGE  `IBAN`  `IBAN` VARCHAR( 100 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `offerta` CHANGE  `Referente`  `Referente` VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;") &&
		$db->ExcecuteSQL("ALTER TABLE  `variazionearticolo` CHANGE  `Codice`  `Codice` VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;"))
	$SuccessAttributiOfferta = "OK";


//MODIFICA ALLE TABELLE PER LE CHIAVI ESTERNE
//Impostazione di tutte le chiavi esterne (escluse quelle per le tabelle di associazione tipo articoloOfferta) On delete Set Null
$SuccessForeignKey = "false";
if ($db->ExcecuteSQL("ALTER TABLE  `cliente` DROP FOREIGN KEY  `fk_{1FBA035C-3643-47E5-99BC-8F63BDB51A96}` ;") &&
	$db->ExcecuteSQL("ALTER TABLE  `cliente` ADD CONSTRAINT  `fk_{1FBA035C-3643-47E5-99BC-8F63BDB51A96}` FOREIGN KEY (  `idAgente` ) REFERENCES `db_claudio2`.`agente` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE ;") &&
	$db->ExcecuteSQL("ALTER TABLE  `articolo` DROP FOREIGN KEY  `fk` ;") &&
	$db->ExcecuteSQL("ALTER TABLE  `articolo` ADD CONSTRAINT  `fk` FOREIGN KEY (  `idAziendaRappresentata` ) REFERENCES `db_claudio2`.`aziendarappresentata` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE ;") &&
	$db->ExcecuteSQL("ALTER TABLE  `offerta` DROP FOREIGN KEY  `fk_{0DFE3934-CF60-486A-A547-F172C2C63F7A}` ;") &&
	$db->ExcecuteSQL("ALTER TABLE  `offerta` ADD CONSTRAINT  `fk_{0DFE3934-CF60-486A-A547-F172C2C63F7A}` FOREIGN KEY (  `idAgente` ) REFERENCES `db_claudio2`.`agente` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE ;") &&
	$db->ExcecuteSQL("ALTER TABLE  `offerta` DROP FOREIGN KEY  `fk_2` ;") &&
	$db->ExcecuteSQL("ALTER TABLE  `offerta` ADD CONSTRAINT  `fk_2` FOREIGN KEY (  `idCliente` ) REFERENCES  `db_claudio2`.`cliente` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE ;"))
$SuccessForeignKey = "OK";


//MODIFICA CAMPI OBBLIGATORI PARTITA IVA CODICE FISCALE
$SuccessCampiObbligatori = "flase";
if ($db->ExcecuteSQL("ALTER TABLE  `cliente` CHANGE  `CodiceFiscale`  `CodiceFiscale` VARCHAR( 45 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL ,
CHANGE  `PartitaIVA`  `PartitaIVA` VARCHAR( 45 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ;"))
$SuccessCampiObbligatori = "OK";

printGenericPage("Aggiornamento 02", "Aggiornamento completato!!<br/> " .
		"<br/>Aggiunta Nuova Tabella Ordine: " . $SuccessOrdine .
		"<br/>Aggiunta Nuova Tabella ArticoloOrdine: " . $SuccessArticoloOrdine .
		"<br/>Aggiunta Nuova Tabella VariazioneArticoloOrdine: " . $SuccessVariazioneArticoloOrdine .
		"<br/>Aggiunto Attributo Logo in Tabella AziendaRappresentata: " . $SuccessLogoAziendaRappresentata .
		"<br/>Modificati attributi a varie tabelle per estendere i caratteri supportati: " . $SuccessAttributiOfferta.
		"<br/>Modificate chiavi esterne (On Delete set Null) delle tabelle: ".$SuccessForeignKey .
		"<br/>Modificati campi Obbligatori (Cliente.IVA e Cliente.Codicefiscale): ".$SuccessCampiObbligatori,  array(), "", "");


?>


